---
title: Application architecture
summary: Full layer diagram, architectural patterns, and cross-library integration points.
status: draft
owner: <owner>
last_reviewed: 2026-08-21
---

# Application architecture

Claims Legal follows a layered BOF pattern with a WebForms presentation tier, an application-manager orchestration tier, a business-object tier, and a service/integration tier.

## Layer diagram

The following diagram shows how the WebForms screens call application managers, which orchestrate business libraries and downstream service integrations.

```mermaid
flowchart TD
  subgraph P["Presentation layer"]
    P1["Legal WebForms<br>DefaultMaster, frmCaseSearch, frmSummary, frmSchedule, frmRequest, frmAppeal"]
    P2["Popup controls<br>SAIF.Presentation.Web.Controls.PopUps.Infragistics111"]
  end
  subgraph A["Application layer"]
    A1["SAIF.Application<br>AppManagerBase, UserAccess"]
    A2["SAIF.Application.Claim<br>ClaimAppManager, ClaimSecurity"]
    A3["SAIF.Application.Claim.Legal<br>LegalManagerBase and screen managers"]
  end
  subgraph B["Business layer"]
    B1["SAIF.Business.Claim.Legal<br>legal cases, schedules, appeals, outcomes, costs"]
    B2["SAIF.Business.View.Policy<br>policy view, affiliations, policy security"]
    B3["SAIF.Business.Policy<br>shared policy contracts and lookups"]
    B4["SAIF.Business.Utilities<br>formatting helpers"]
  end
  subgraph S["Services and integrations"]
    S1["SAIF.Services.Appworx<br>batch letter jobs"]
    S2["SAIF.Services.Printing<br>xPression and SSRS"]
    S3["SAIF.Services.Export<br>CSV download"]
    S4["SAIF.Services.Imaging.Import<br>imaging payloads"]
    S5["Guidewire APIs<br>GwMatterApi, GWActivityData, GWClaimDataApi"]
    S6["Oracle and SQL Server BDS<br>BOF data portal targets"]
  end
  P1 --> P2
  P1 --> A3
  A3 --> A2
  A2 --> A1
  A3 --> B1
  A3 --> B2
  B2 --> B3
  B1 --> B4
  A3 --> S1
  A3 --> S2
  A3 --> S3
  S2 --> S4
  A3 --> S5
  B1 --> S6
  B2 --> S6
```

## Layer descriptions

| Layer | Libraries | Responsibility |
| --- | --- | --- |
| Presentation | `Legal` (ASP.NET WebForms, DefaultMaster.master, database-driven menu navigation, Infragistics 11.1 grids/editors), [SAIF.Presentation.Web.Controls.PopUps.Infragistics111](../libraries/saif-presentation-web-controls-popups-infragistics111/overview.md) | Renders screens, hosts reusable popup controls for notes, notify workflows, image moves, and task prompts. |
| Application | [SAIF.Application](../libraries/saif-application/overview.md), [SAIF.Application.Claim](../libraries/saif-application-claim/overview.md), [SAIF.Application.Claim.Legal](../libraries/saif-application-claim-legal/overview.md) | `SAIF.Application` supplies `AppManagerBase`, `ApplicationDataAccess`, `UserAccess`, and shared service-response helpers. `SAIF.Application.Claim` adds claim context, claim security, and claim task orchestration. `SAIF.Application.Claim.Legal` is the application-specific core, where each screen maps to a manager class such as `clsCaseSearchManager`, `clsScheduleManager`, `clsRequestManager`, `clsAppealManager`, or `clsAssignmentManager`. |
| Business | [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md), [SAIF.Business.View.Policy](../libraries/saif-business-view-policy/overview.md), [SAIF.Business.Policy](../libraries/saif-business-policy/overview.md), [SAIF.Business.Utilities](../libraries/saif-business-utilities/overview.md) | `SAIF.Business.Claim.Legal` owns the legal case aggregate, schedules, appeals, outcomes, requests, notes, case cost, assignment logic, and reference-data maintenance objects. `SAIF.Business.View.Policy` supplies policy context, policy security, affiliations, team assignments, and policyholder data masking. `SAIF.Business.Policy` supplies shared policy contracts, enums, code maps, hazard groups, and policy information lookups. `SAIF.Business.Utilities` supplies formatting helpers used by policy-facing components. |
| Service and integration | [SAIF.Services.Appworx](../libraries/saif-services-appworx/overview.md), [SAIF.Services.Printing](../libraries/saif-services-printing/overview.md), [SAIF.Services.Export](../libraries/saif-services-export/overview.md), [SAIF.Services.Imaging.Import](../libraries/saif-services-imaging-import/overview.md) | `SAIF.Services.Appworx` submits batch jobs for letter generation. `SAIF.Services.Printing` provides xPression and SSRS document generation and preview. `SAIF.Services.Export` supports CSV export flows. `SAIF.Services.Imaging.Import` carries imaging metadata for downstream document distribution. |

## Key patterns
- Screen-per-manager pattern: every major screen has a dedicated application manager with `OnRetrieve` and `OnWrite` orchestration.
- BOF data-portal pattern: business objects use `IBusinessCriteria`, `IDataPortalInfo`, Oracle stored procedures, inline SQL, and targeted ad hoc queries.
- Hybrid data access: legal-case data is primarily Oracle-backed, while policy-security and book-of-business lookups also use a SQL Server BDS connection.
- Hybrid integration model: some operations call Oracle directly, some call `LegalApi`-style REST routes, and some call external services such as Guidewire, xPression, SSRS, and Appworx.
- Cross-screen shared controls: the master page, popup library, `ClaimHeader` control, `ObjectBindManager`, and menu controls provide consistent navigation and edit behavior.

## Integration points

| Integration | Type | Direction | Libraries involved |
| --- | --- | --- | --- |
| Guidewire matter and activity APIs | API | Outbound | [SAIF.Application.Claim.Legal](../libraries/saif-application-claim-legal/overview.md) |
| Claim claim-data API (`ccclaimdataapi`) | API | Outbound | [SAIF.Application.Claim.Legal](../libraries/saif-application-claim-legal/overview.md) |
| Appworx batch job submission | API/File | Outbound | [SAIF.Services.Appworx](../libraries/saif-services-appworx/overview.md) |
| xPression document generation and SSRS report execution | API | Outbound | [SAIF.Services.Printing](../libraries/saif-services-printing/overview.md) |
| Oracle BOF data portal | DB | Bidirectional | [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md) |
| SQL Server BDS policy-security lookups | DB | Inbound | [SAIF.Business.View.Policy](../libraries/saif-business-view-policy/overview.md) |
| Imaging/OnBase document distribution payloads | File/Message | Outbound | [SAIF.Services.Imaging.Import](../libraries/saif-services-imaging-import/overview.md), [SAIF.Services.Printing](../libraries/saif-services-printing/overview.md) |

## Design constraints
- This is a .NET Framework ASP.NET WebForms application; it does not run on .NET Core/.NET 5+ and depends on IIS-hosted NTLM/Kerberos Windows authentication rather than a portable, cross-platform identity model.*
- Hybrid Oracle/SQL Server data access requires both connection contracts to be present and correctly configured in every deployment environment.
- Guidewire integrations are treated as best-effort: qualifying schedules and WCD updates are sent externally, but logging and exception handling prevent the base legal-case save from failing solely because a downstream API call failed ([BR-APP-006](business-rules.md#br-app-006-guidewire-integration-is-best-effort)).
- Consolidated (primary/secondary) legal cases must be kept state-aligned across independent save operations, which constrains how schedule, outcome, and status-change logic can be modified without breaking propagation ([BR-APP-003](business-rules.md#br-app-003-consolidated-case-state-propagation)).

## Related documentation
- [Application index](index.md)
- [Overview](overview.md)
- [Dependencies](dependencies.md)
- [Configuration](configuration.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Security and authorization](security-authorization.md)
- [Data model](data-model.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `Legal/Web.config`
- `Legal/Legal.vbproj`
- `SAIF.Application.Claim.Legal/LegalManagerBase.vb`
- `SAIF.Business.Claim.Legal/SAIF.Business.Claim.Legal.vbproj`
- `SAIF.Business.View.Policy/SAIF.Business.View.Policy.vbproj`
